The present invention relates to a method of managing execution threads launched by computer processes within a computer unit. The invention also provides a computer unit for performing the method.
A computer unit, such as the central processor unit of a personal computer, of a server, or of a workstation, generally has at least one calculation core connected to a memory containing an operating system (O.S.) and applications.
The execution of an instance of one of these applications gives rise to a process being executed within the unit. Each process may give rise to one or more threads being executed, which threads share the memory of the parent process. For simplification purposes, the term “thread” is used herein to describe code portions that can be executed concurrently, regardless of whether they are the code of processes, or the code of threads created by processes.
High-performance computer units have increasing numbers of calculation cores enabling threads to be executed in parallel. The scheduling of various threads that can make use of the performance of a plurality of cores and the launching of tasks that have different priorities and durations is an operation that is relatively complex, and difficult to calculate and incorporate for the purpose of optimizing both computation streams and response times. In order to retain some control over execution durations and management of priorities, it is generally necessary to have recourse to a so-called “real time” scheduling program. This gives rise to a loss of flexibility in the operation of the computer unit and is expensive to develop.
Certain fields require high levels of computation power, such as for example processing information in databases of very large size, and it is common practice to use computer systems that group together a plurality of multi-core computer units, each of which has access to a portion of the database. In such fields, it can be understood that optimizing the load on the calculation cores with each computer unit serves to reduce the number of computer units needed by the computer system and thus to reduce the cost of the system. Reducing the costs of a system is thus a major target.